#include <iostream>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>

void handlerSig(int sig)
{
    std::cout << "获得一个信号: " << sig <<std::endl;
    //exit(12);
}

int main()
{
    for(int i = 1; i < 32; i++)
        signal(i,handlerSig);//为信号自定义该信号的函数行为，跳过9和19（不可被捕获和忽视）

    // for(int i = 1 ;i < 32; i++)
    // {
    //     sleep(1);
    //     if(i == 9 || i==19)
    //         continue;
    //     raise(i);//向自己发送 SIGINT 信号（等效于按 Ctrl+C）
    // }    

    int cnt = 0;
    while(true)
    {
        std::cout << "hello world, " << cnt++ << " ,pid: " <<getpid() << std::endl;
        int a = 10;
        a/=0;
        //abort();//程序会发送 SIGABRT 信号（信号6）,默认行为是终止进程并生成核心转储文件（core dump）;
        //abort() 没有返回值，因为它会终止程序。
        sleep(1);
    }
}